package com.kobeliu.service;

import com.kobeliu.enums.JobStatus;
import com.kobeliu.pojo.Job;
import com.kobeliu.pojo.bo.EditJobBO;
import com.kobeliu.pojo.bo.SearchJobsBO;
import com.kobeliu.pojo.vo.SearchJobsVO;
import com.kobeliu.result.GraceJSONResult;
import com.kobeliu.utils.PagedGridResult;

import java.util.List;

public interface JobService {
    /**
     * 查询职位列表
     * @param hrId
     * @param companyId
     * @param page
     * @param limit
     * @param status
     * @return
     */
    PagedGridResult hrJobList(String hrId, String companyId, Integer page, Integer limit,Integer status);

    /**
     * 查询全部职位列表
     * @param hrId
     * @param companyId
     * @param page
     * @param limit
     * @return
     */
    PagedGridResult hrJobAllList(String hrId, String companyId, Integer page, Integer limit);

    /**
     * 单职位详情
     * @param hrId
     * @param companyId
     * @param jobId
     * @return
     */
    Job jobDetail(String hrId, String companyId, String jobId);

    /**
     * 修改岗位详情
     * @param bo
     */
    void modifyJob(EditJobBO bo);

    /**
     * 关闭职位
     * @param hrId
     * @param companyId
     * @param jobId
     */
    void closeJob(String hrId, String companyId, String jobId);

    /**
     * 开放职位
     * @param hrId
     * @param companyId
     * @param jobId
     */
    void openJob(String hrId, String companyId, String jobId);

    /**
     * 管理员获取所有的职位
     * @param page
     * @param limit
     * @return
     */
    PagedGridResult adminJobList(String companyId,Integer page, Integer limit);

    /**
     * 根据Id查询职位信息
     * @param jobId
     * @return
     */
    Job adminJobDetail(String jobId);

    /**
     * 根据条件搜索职位
     * @param bo
     * @param page
     * @param limit
     * @return
     */
    PagedGridResult searchJobs(SearchJobsBO bo, Integer page, Integer limit,JobStatus status);

    /**
     * 根据Hrid查询绑定的职位个数
     * @param hrId
     * @return
     */
    long getJobCounts(String hrId);

    /**
     * 根据传入的id即状态 查询job详细的数据
     * @param jobIds
     * @param open
     * @return
     */
    List<SearchJobsVO> selectJobDetailsByIds(List<String> jobIds, JobStatus open);
}
